home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / dmsv.lha / dmsv.s < prev    next >
Encoding:
Text File  |  1980-03-08  |  24.5 KB  |  1,623 lines

  1.  
  2.     section    dmsverify,code
  3.  
  4.     incdir    dh0:include/
  5.  
  6. code:    include    system
  7.     Include    Misc/EasyStart.i
  8.  
  9.     ;this patches the system so the old 1.51 version of DMS
  10.     ;plus warp (WRP) verifies when writing to disk, also it opens
  11.     ;a requester if no filename is typed.
  12.     
  13.  
  14.     move.l    4,a6
  15.     move.l    #myname,a1
  16.     jsr    -294(a6)
  17.     cmp.l    #0,d0
  18.     bne    .error
  19.  
  20.     Lea    DosName,A1
  21.     Moveq    #0,D0
  22.     CALLEXEC    OpenLibrary
  23.     Move.l     D0,_DOSBase
  24.     Beq    .error
  25.  
  26.     lea    code(pc),a0
  27.     move.l    -4(a0),d3
  28.     move.l    d3,segaddress
  29.     move.l    #0,-4(a0)
  30.     
  31.     move.l    _DOSBase,a6
  32.     move.l    #myname,d1
  33.     move.l    #0,d2
  34.     move.l    #4000,d4
  35.     jsr    -138(a6)            ; create proc
  36.  
  37. .error    clr.l    d0    
  38.     rts
  39.  
  40.  
  41.     Section    Main,Code
  42. Start:
  43.     Lea    IntName,A1
  44.     Moveq    #0,D0
  45.     CALLEXEC    OpenLibrary
  46.     Move.l    D0,_IntuitionBase
  47.     Beq    Error
  48.  
  49.     move.l    #savename,d1
  50.     move.l    #1005,d2
  51.     CALLDOS    Open
  52.     move.l    d0,fhand
  53.     beq    .nofile
  54.     
  55.     move.l    #options,d2
  56.     move.l    #6,d3
  57.     move.l    fhand,d1
  58.     CALLDOS    Read
  59.     
  60.     move.l    fhand,d1
  61.     CALLDOS    Close
  62.  
  63. .nofile    tst.b    options+0
  64.     beq    .not1
  65.     lea    CGad2,a0
  66.     or.w    #SELECTED,12(a0)
  67. .not1    tst.b    options+1
  68.     beq    .not2
  69.     lea    CGad4,a0
  70.     or.w    #SELECTED,12(a0)
  71. .not2    tst.b    options+2
  72.     beq    .not3
  73.     lea    CGad6,a0
  74.     or.w    #SELECTED,12(a0)
  75. .not3    tst.b    options+3
  76.     beq    .not4
  77.     lea    CGad8,a0
  78.     or.w    #SELECTED,12(a0)
  79. .not4    tst.b    options+4
  80.     beq    .not5
  81.     lea    CGad10,a0
  82.     or.w    #SELECTED,12(a0)
  83. .not5    tst.b    options+5
  84.     beq    .not6
  85.     lea    CGad12,a0
  86.     or.w    #SELECTED,12(a0)
  87. .not6
  88.  
  89.  
  90.     Lea    MainWindow,a0
  91.     CALLINT    OpenWindow
  92.     Move.l    D0,_MyWinBase
  93.     Beq    CloseInt
  94.     Move.l    D0,A0
  95.     Move.l    wd_RPort(A0),_MyWinRPort
  96.     Move.l    wd_UserPort(a0),_MyWinUserPort
  97.  
  98.     *-----------------------------------------------*
  99.     
  100.     move.l    4,a0
  101.     lea    -462(a0),a0
  102.     move.l    2(a0),OldBeginIO
  103.     move.l    #My_BeginIo,2(a0)
  104.  
  105.     move.l    4,a0
  106.     lea    -456(a0),a0
  107.     move.l    2(a0),OldDoIo
  108.     move.l    #My_DoIo,2(a0)
  109.     
  110.     move.l    4,a0
  111.     lea    -444(a0),a0
  112.     move.l    2(a0),oldopendev
  113.     move.l    #my_opendev,2(a0)
  114.  
  115.     move.l    _IntuitionBase,a1
  116.  
  117.     lea    -346(a1),a0    ; ks 1.2/1.3 offset (autorequest)
  118.     cmp.w    #$4ef9,-588(a1)    ; check if jump
  119.     bne    ks210_noalert
  120.  
  121.     lea    -586(a1),a0    ; ks 2.0 offset (autorequest)
  122.     bra    ks13_noalert
  123.  
  124. ks210_noalert:
  125.     cmp.w    #$4ef9,-594(a1)    ; check if jump
  126.     bne    ks13_noalert
  127.  
  128.     lea    -588(a1),a0    ; ks 2.0 offset (autorequest)
  129.  
  130. ks13_noalert:
  131.     move.l    a0,reqpos
  132.     move.l    (a0),oldreq+2
  133.     move.l    #do_alert,(a0)
  134.  
  135.     *-----------------------------------------------*
  136.  
  137.     lea    name2(pc),a1    
  138.     lea    file_req(pc),a2
  139.     move.l    a1,14(a2)
  140.     
  141.     lea    rlib(pc),a1
  142.     moveq    #0,d0
  143.     move.l    4.w,a6
  144.     jsr    -$228(a6)
  145.     tst    d0
  146.     beq    Error
  147.     move.l    d0,reqlib
  148.  
  149.     clr.l    d0
  150.     move.l    _DOSBase,a0
  151.     sub.l    #30,a0
  152.     cmp.w    #$4ef9,(a0)
  153.     bne    .notjump
  154.  
  155.     move.l    2(a0),open_jmp+2
  156.     move.l    #my_open,2(a0)
  157.     bra    WaitLoop
  158.     
  159. .notjump    
  160.     move.w    4(a0),d0
  161.     add.l    a0,d0
  162.     add.l    #4,d0
  163.     move.l    d0,open_jmp+2
  164.     
  165.     move.l    0(a0),orig_jmp+0
  166.     move.l    4(a0),orig_jmp+4
  167.     move.w    #$4ef9,0(a0)
  168.     move.l    #my_open,2(a0)
  169.  
  170.     *-----------------------------------------------*
  171.     
  172. WaitLoop
  173.     Move.l    _MyWinUserPort,A0
  174.     CALLEXEC    WaitPort
  175.     Move.l    _MyWinUserPort,A0
  176.     CALLEXEC    GetMsg
  177.     Move.l    D0,A1
  178.     Move.l    im_Class(A1),D2        ;D2=IDCMP Flags Directly
  179.     Move.w    im_Code(A1),D3        ;D3=Data ie key why class=Rawkey
  180.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  181.     Move.w    im_MouseX(a1),D5        ;D5=MouseX Coordinate
  182.     Move.w    im_MouseY(a1),D6        ;D5=MouseY Coordinate
  183.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  184.     Movem.l    D0-D7/A0-A6,-(A7)    
  185.     CALLEXEC    ReplyMsg
  186.     Movem.l    (a7)+,D0-D7/A0-A6
  187.     cmp.l    #MENUPICK,d2
  188.     bne    .ok
  189.  
  190.     bsr    config
  191.  
  192. .ok    Cmp.l    #CLOSEWINDOW,D2
  193.     bne    WaitLoop
  194.  
  195. Exit    Move.l    _MyWinBase,A0
  196.     CALLINT    CloseWindow
  197.  
  198. CloseInt
  199.     Move.l    _IntuitionBase,A1
  200.     CALLEXEC    CloseLibrary
  201.  
  202.     Move.l    reqlib,A1
  203.     cmp.l    #0,a1
  204.     beq    .skip
  205.     CALLEXEC    CloseLibrary
  206.  
  207. .skip    Move.l    _DOSBase,A1
  208.     CALLEXEC    CloseLibrary
  209.  
  210.     *-------------------------------*
  211.  
  212.     move.l    reqpos,a0
  213.     move.l    oldreq+2,(a0)
  214.  
  215.     *-------------------------------*
  216.  
  217.     move.l    4,a0
  218.     lea    -462(a0),a0
  219.     move.l    OldBeginIO,2(a0)
  220.  
  221.     move.l    4,a0
  222.     lea    -456(a0),a0
  223.     move.l    OldDoIo,2(a0)
  224.  
  225.     move.l    4,a0
  226.     lea    -444(a0),a0
  227.     move.l    oldopendev,2(a0)
  228.     
  229.     *-------------------------------*
  230.  
  231.     clr.l    d0
  232.     move.l    _DOSBase,a0
  233.     sub.l    #30,a0
  234.     cmp.l    #0,orig_jmp
  235.     bne    .normal
  236.  
  237.     move.l    open_jmp+2,2(a0)
  238.  
  239.     move.l    _DOSBase,a6
  240.     move.l    segaddress,d1
  241.     jmp    -156(a6)            ; unloadseg
  242.     
  243. .normal    
  244.     move.l    orig_jmp+0,0(a0)
  245.     move.l    orig_jmp+4,4(a0)    
  246.  
  247.     move.l    _DOSBase,a6
  248.     move.l    segaddress,d1
  249.     jmp    -156(a6)            ; unloadseg
  250.  
  251. Error    Moveq    #1,D0
  252.     Rts
  253.  
  254.     *-------------------------------*
  255.  
  256. my_open:    tst.b    options+3
  257.     beq    .skip
  258.  
  259.     move.l    d1,filename
  260.     moveq    #0,d0
  261.     movem.l    d1-d7/a0-a6,-(a7)
  262.     move.l    d1,a0
  263.     cmp.b    #".",0(a0)
  264.     seq    d0
  265.     cmp.b    #":",3(a0)
  266.     bne    .ok
  267.     cmp.b    #".",4(a0)    
  268.     seq    d0    
  269. .ok    movem.l    (a7)+,d1-d7/a0-a6
  270.     tst    d0
  271.     bne    .no
  272.  
  273.     moveq    #-1,d0
  274.     bsr    open_jmp
  275.  
  276.     cmp.l    #0,d0
  277.     bne    open_ok
  278.  
  279. .no    movem.l    d2-d7/a0-a6,-(a7)
  280.  
  281.     move.l    filename,a0
  282. .check    cmp.b    #".",(a0)+
  283.     beq    ..found
  284.     cmp.b    #32,(a0)
  285.     bge    .check
  286.     
  287. .quit    movem.l    (a7)+,d2-d7/a0-a6
  288.     clr.l    d0
  289.     rts
  290.  
  291. ..found    move.b    0(a0),d0
  292.     or.b    #32,d0
  293.     cmp.b    #"d",d0
  294.     beq    .ok1
  295.     cmp.b    #"w",d0
  296.     bne    .quit
  297.  
  298. .ok1    move.b    1(a0),d0
  299.     or.b    #32,d0
  300.     cmp.b    #"m",d0
  301.     beq    .ok2
  302.     cmp.b    #"r",d0
  303.     bne    .quit
  304.  
  305. .ok2    move.b    2(a0),d0
  306.     or.b    #32,d0
  307.     cmp.b    #"s",d0
  308.     beq    .ok3
  309.     cmp.b    #"p",d0
  310.     bne    .quit
  311.  
  312. .ok3    move.l    filename,a0
  313.     lea    path,a1
  314. .loop    cmp.b    #32,(a0)
  315.     blt    .stoploop
  316.     move.b    (a0)+,(a1)+
  317.     bra    .loop
  318. .stoploop
  319.  
  320. .loop2    sub.l    #1,a0
  321.     sub.l    #1,a1
  322.     cmp.b    #"/",(a0)
  323.     beq    .fsp
  324.     cmp.b    #":",(a0)
  325.     beq    .fsp
  326.     cmp.l    filename,a0
  327.     bne    .loop2    
  328.     move.b    #0,path
  329.  
  330.     lea    fsp,a1
  331.     move.l    filename,a0
  332. .fsploop2
  333.     move.b    (a0)+,(a1)+
  334.     cmp.b    #0,(a0)
  335.     bne    .fsploop
  336.     bra    .nofsp
  337.  
  338. .fsp    move.b    (a0)+,(a1)+
  339.     move.b    #0,(a1)
  340.     lea    fsp,a1
  341. .fsploop
  342.     move.b    #0,(a1)
  343.     cmp.b    #0,(a0)
  344.     beq    .nofsp
  345.     move.b    (a0)+,(a1)+
  346.     bra    .fsploop
  347.  
  348. .nofsp    move.l    reqlib,a6    
  349.     lea    file_req(pc),a0
  350.     move.l    #path,6(a0)            ; initial path
  351.     move.l    #fsp,10(a0)            ; initial filename
  352.  
  353.     jsr    -84(a6)
  354.     beq    req_error
  355.     
  356.     lea    file_req(pc),a0
  357.     move.l    14(a0),d1            ; full path & filename
  358.  
  359.     movem.l    (a7)+,d2-d7/a0-a6
  360.     bra    my_open
  361.  
  362. .skip    move.l    #-1,d0
  363.     bra    open_jmp
  364.  
  365. req_error:
  366.     movem.l    (a7)+,d2-d7/a0-a6
  367.     clr.l    d0
  368. open_ok:    rts
  369.  
  370. open_jmp:    jmp    $12345678
  371.  
  372.     *-------------------------------*
  373.  
  374.  
  375.  
  376. My_DoIo:
  377.     cmp.w    #$800b,28(a1)
  378.     bne    .skip
  379.  
  380.     cmp.l    #$1600,d1
  381.     bne    .skip
  382.  
  383.     tst.b    options+1
  384.     beq    .skip
  385.     
  386.     movem.l    d0-d7/a0-a6,-(a7)
  387.  
  388.     move.l    d1,tracknumber
  389.  
  390.     bsr    .skip
  391.  
  392.     move.l    #2,retries
  393.  
  394. .again    CALLDOS    Output
  395.     move.l    d0,handle
  396.  
  397.     move.l    handle,d1
  398.     move.l    #wrp_vermsg,d2
  399.     move.l    #wrp_vermsgend-wrp_vermsg,d3
  400.     bsr    doswrite
  401.  
  402.     move.l    #0,a1
  403.     CALLEXEC    FindTask
  404.     move.l    d0,readreply+16
  405.     
  406.     lea    readreply,a1
  407.     CALLEXEC    AddPort
  408.     
  409.     lea    diskio,a1
  410.     move.l    drivenumber,d0            ; drive number
  411.     clr.l    d1
  412.     lea    trddevice,a0
  413.  
  414.     move.l    4,a6
  415.     bsr    my_opendev
  416.     tst.l    d0
  417.     bne    .error            ; no td device avail
  418.     
  419.     lea    diskio,a1
  420.     move.l    #readreply,14(a1)
  421.     move.w    #2,28(a1)        ; 28 = command
  422.     move.l    #22*512,36(a1)        ; 36 = length
  423.     move.l    #diskbuff,40(a1)        ; 40 = data
  424.     move.l    tracknumber,44(a1)    ; 44 = where
  425.     
  426.     CALLEXEC    DoIO
  427.  
  428.     cmp.b    #0,31(a1)
  429.     beq    .ok
  430.     
  431.     lea    readreply,a1
  432.     CALLEXEC    RemPort
  433.     
  434.     lea    diskio,a1
  435.     CALLEXEC    CloseDevice
  436.  
  437.     sub.l    #1,retries
  438.     bmi    .giveup
  439.  
  440.     move.l    handle,d1
  441.     move.l    #wrp_wrimsg,d2
  442.     move.l    #wrp_wrimsgend-wrp_wrimsg,d3
  443.     bsr    doswrite
  444.  
  445.     movem.l    (a7)+,d0-d7/a0-a6
  446.     movem.l    d0-d7/a0-a6,-(a7)
  447.     
  448.     bsr    .skip            ; beginIO
  449.     movem.l    (a7)+,d0-d7/a0-a6
  450.     movem.l    d0-d7/a0-a6,-(a7)
  451.     jsr    -474(a6)            ; waitIO
  452.     
  453.     bra    .again    
  454.     
  455. .giveup    
  456.     Move.l    _MyWinBase,A0
  457.     Move.l    #-399,D0
  458.     Move.l    #-9,D1
  459.     CALLINT    SizeWindow
  460.     
  461.     CALLINT    WBenchToFront
  462.     
  463.     Lea    AlertWindow,a0
  464.     CALLINT    OpenWindow
  465.     Move.l    D0,_MessageWinBase
  466.     Move.l    D0,A0
  467.     Move.l    wd_RPort(A0),_MessageWinRPort
  468.     Move.l    wd_UserPort(a0),_MessageWinUserPort
  469.     Move.l    _MessageWinRPort,A0
  470.     
  471. .loop
  472.     Move.l    _MessageWinUserPort,A0
  473.     CALLEXEC    WaitPort
  474.     Move.l    _MessageWinUserPort,A0
  475.     CALLEXEC    GetMsg
  476.     Move.l    D0,A1
  477.     Move.l    im_Class(A1),D2        ;D2=IDCMP Flags Directly
  478.     Move.w    im_Code(A1),D3        ;D3=Data ie key why class=Rawkey
  479.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  480.     Move.w    im_MouseX(a1),D5        ;D5=MouseX Coordinate
  481.     Move.w    im_MouseY(a1),D6        ;D5=MouseY Coordinate
  482.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  483.  
  484.     Movem.l    D0-D7/A0-A6,-(A7)    
  485.     CALLEXEC    ReplyMsg
  486.     Movem.l    (a7)+,D0-D7/A0-A6
  487.  
  488.     cmp.l    #VANILLAKEY,D2
  489.     beq    .close
  490.  
  491.     Cmp.l    #GADGETUP,D2
  492.     Bne    .loop
  493.  
  494. .close    Move.l    _MessageWinBase,A0
  495.     CALLINT    CloseWindow
  496.  
  497.     Move.l    _MyWinBase,A0
  498.     Move.l    #399,D0
  499.     Move.l    #9,D1
  500.     CALLINT    SizeWindow
  501.  
  502.     movem.l    (a7)+,d0-d7/a0-a6
  503.     tst.b    options+2
  504.     beq    .noabort
  505.  
  506.     bsr    goodbyemessage
  507.  
  508.     move.l    (a7),a0
  509.     lea    goodbye,a1
  510.     move.l    (a1)+,(a0)+
  511.     move.l    (a1)+,(a0)+
  512.     move.l    (a1)+,(a0)+
  513.     move.l    (a1)+,(a0)+
  514.     move.l    (a1)+,(a0)+
  515.     
  516.     rts    
  517.  
  518. .noabort    
  519.     rts
  520.  
  521. .ok    lea    readreply,a1
  522.     CALLEXEC    RemPort
  523.     
  524.     lea    diskio,a1
  525.     CALLEXEC    CloseDevice
  526.  
  527. .error    movem.l    (a7)+,d0-d7/a0-a6
  528.     rts
  529.  
  530.  
  531.     
  532. .skip    dc.w    $4ef9
  533. OldDoIo:    dc.l    0
  534.  
  535.  
  536. goodbye:    move.l    #$64,d0
  537.     CALLDOS    Exit
  538.  
  539. goodbyemessage:
  540.     move.l    handle,d1
  541.     move.l    #quitmsg,d2
  542.     move.l    #quitmsgend-quitmsg,d3
  543.     bsr    doswrite
  544.     rts
  545.     
  546. My_BeginIo:
  547.     cmp.w    #$800b,28(a1)
  548.     bne    .skip
  549.  
  550.     cmp.l    #$2c00,d6        ; not dms!
  551.     bne    .skip
  552.     
  553.     tst.b    options+0
  554.     beq    .skip
  555.  
  556.     move.l    d0,tracknumber
  557.  
  558.     movem.l    d0-d7/a0-a6,-(a7)
  559.     
  560.     bsr    .skip            ; beginIO
  561.     movem.l    (a7)+,d0-d7/a0-a6
  562.     movem.l    d0-d7/a0-a6,-(a7)
  563.     jsr    -474(a6)            ; waitIO
  564.  
  565.     move.l    #2,retries
  566.  
  567. .again    CALLDOS    Output
  568.     move.l    d0,handle
  569.  
  570.  
  571.     move.l    handle,d1
  572.     move.l    #vermsg,d2
  573.     move.l    #vermsgend-vermsg,d3
  574.     bsr    doswrite
  575.  
  576.     move.l    #0,a1
  577.     CALLEXEC    FindTask
  578.     move.l    d0,readreply+16
  579.     
  580.     lea    readreply,a1
  581.     CALLEXEC    AddPort
  582.     
  583.     lea    diskio,a1
  584.     move.l    drivenumber,d0            ; drive number
  585.     clr.l    d1
  586.     lea    trddevice,a0
  587.  
  588.     move.l    4,a6
  589.     bsr    my_opendev
  590.     tst.l    d0
  591.     bne    .error            ; no td device avail
  592.     
  593.     lea    diskio,a1
  594.     move.l    #readreply,14(a1)
  595.     move.w    #2,28(a1)            ; 28 = command
  596.     move.l    #22*512,36(a1)        ; 36 = length
  597.     move.l    #diskbuff,40(a1)        ; 40 = data
  598.     move.l    tracknumber,44(a1)        ; 44 = where
  599.     
  600.     CALLEXEC    DoIO
  601.  
  602.     cmp.b    #0,31(a1)
  603.     beq    .ok
  604.     
  605.     lea    readreply,a1
  606.     CALLEXEC    RemPort
  607.     
  608.     lea    diskio,a1
  609.     CALLEXEC    CloseDevice
  610.  
  611.     sub.l    #1,retries
  612.     bmi    .giveup
  613.  
  614.     move.l    handle,d1
  615.     move.l    #wrimsg,d2
  616.     move.l    #wrimsgend-wrimsg,d3
  617.     bsr    doswrite
  618.  
  619.     movem.l    (a7)+,d0-d7/a0-a6
  620.     movem.l    d0-d7/a0-a6,-(a7)
  621.     
  622.     bsr    .skip            ; beginIO
  623.     movem.l    (a7)+,d0-d7/a0-a6
  624.     movem.l    d0-d7/a0-a6,-(a7)
  625.     jsr    -474(a6)            ; waitIO
  626.     
  627.     bra    .again    
  628.     
  629. .giveup    
  630.     Move.l    _MyWinBase,A0
  631.     Move.l    #-399,D0
  632.     Move.l    #-9,D1
  633.     CALLINT    SizeWindow
  634.     
  635.     CALLINT    WBenchToFront
  636.     
  637.     Lea    AlertWindow,a0
  638.     CALLINT    OpenWindow
  639.     Move.l    D0,_MessageWinBase
  640.     Move.l    D0,A0
  641.     Move.l    wd_RPort(A0),_MessageWinRPort
  642.     Move.l    wd_UserPort(a0),_MessageWinUserPort
  643.     Move.l    _MessageWinRPort,A0
  644.     
  645. .loop
  646.     Move.l    _MessageWinUserPort,A0
  647.     CALLEXEC    WaitPort
  648.     Move.l    _MessageWinUserPort,A0
  649.     CALLEXEC    GetMsg
  650.     Move.l    D0,A1
  651.     Move.l    im_Class(A1),D2        ;D2=IDCMP Flags Directly
  652.     Move.w    im_Code(A1),D3        ;D3=Data ie key why class=Rawkey
  653.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  654.     Move.w    im_MouseX(a1),D5        ;D5=MouseX Coordinate
  655.     Move.w    im_MouseY(a1),D6        ;D5=MouseY Coordinate
  656.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  657.  
  658.     Movem.l    D0-D7/A0-A6,-(A7)    
  659.     CALLEXEC    ReplyMsg
  660.     Movem.l    (a7)+,D0-D7/A0-A6
  661.  
  662.     cmp.l    #VANILLAKEY,D2
  663.     beq    .close
  664.  
  665.     Cmp.l    #GADGETUP,D2
  666.     Bne    .loop
  667.  
  668. .close    Move.l    _MessageWinBase,A0
  669.     CALLINT    CloseWindow
  670.  
  671.     Move.l    _MyWinBase,A0
  672.     Move.l    #399,D0
  673.     Move.l    #9,D1
  674.     CALLINT    SizeWindow
  675.  
  676.     move.l    handle,d1
  677.     move.l    #pakmsg,d2
  678.     move.l    #pakmsgend-pakmsg,d3
  679.     bsr    doswrite
  680.  
  681.     movem.l    (a7)+,d0-d7/a0-a6
  682.     tst.b    options+2
  683.     beq    .noabort
  684.  
  685.     bsr    goodbyemessage
  686.  
  687.     move.l    (a7),a0
  688.     lea    goodbye,a1
  689.     move.l    (a1)+,(a0)+
  690.     move.l    (a1)+,(a0)+
  691.     move.l    (a1)+,(a0)+
  692.     move.l    (a1)+,(a0)+
  693.     move.l    (a1)+,(a0)+
  694.     
  695.     rts    
  696.  
  697. .noabort    
  698.     rts
  699.  
  700. .ok    lea    readreply,a1
  701.     CALLEXEC    RemPort
  702.     
  703.     lea    diskio,a1
  704.     CALLEXEC    CloseDevice
  705.  
  706.     move.l    handle,d1
  707.     move.l    #pakmsg,d2
  708.     move.l    #pakmsgend-pakmsg,d3
  709.     bsr    doswrite
  710.  
  711. .error    movem.l    (a7)+,d0-d7/a0-a6
  712.     rts
  713.  
  714. .skip    dc.w    $4ef9
  715. OldBeginIO:
  716.     dc.l    0
  717.  
  718. my_opendev:
  719.     cmp.l    #$fc0000,a0
  720.     bge    .skip
  721.  
  722.     movem.l    d0-d7/a0-a6,-(a7)
  723.  
  724.     move.l    a0,a1
  725.     jsr    -534(a6)            ; type of mem
  726.     cmp.l    #0,d0
  727.     bgt    .ok
  728.     movem.l    (a7)+,d0-d7/a0-a6
  729.     bra    .skip
  730.  
  731. .ok    movem.l    (a7)+,d0-d7/a0-a6
  732.     move.l    d0,drivenumber
  733.  
  734. .skip    dc.w    $4ef9
  735. oldopendev:
  736.     dc.l    0
  737.     
  738.     *-------------------------------*
  739.  
  740. config:
  741.     Move.l    _MyWinBase,A0
  742.     Move.l    #-399,D0
  743.     Move.l    #-9,D1
  744.     CALLINT    SizeWindow
  745.     
  746.     CALLINT    WBenchToFront
  747.     
  748.     Lea    ConfigWindow,a0
  749.     CALLINT    OpenWindow
  750.     Move.l    D0,_ConfigWinBase
  751.     Move.l    D0,A0
  752.     Move.l    wd_RPort(A0),_ConfigWinRPort
  753.     Move.l    wd_UserPort(a0),_ConfigWinUserPort
  754.     Move.l    _ConfigWinRPort,A0
  755.     
  756. .loop
  757.     Move.l    _ConfigWinUserPort,A0
  758.     CALLEXEC    WaitPort
  759.     Move.l    _ConfigWinUserPort,A0
  760.     CALLEXEC    GetMsg
  761.     Move.l    D0,A1
  762.     Move.l    im_Class(A1),D2        ;D2=IDCMP Flags Directly
  763.     Move.w    im_Code(A1),D3        ;D3=Data ie key why class=Rawkey
  764.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  765.     Move.w    im_MouseX(a1),D5        ;D5=MouseX Coordinate
  766.     Move.w    im_MouseY(a1),D6        ;D5=MouseY Coordinate
  767.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  768.  
  769.     Movem.l    D0-D7/A0-A6,-(A7)    
  770.     CALLEXEC    ReplyMsg
  771.     Movem.l    (a7)+,D0-D7/A0-A6
  772.  
  773.     Cmp.l    #GADGETUP,D2
  774.     Bne    .loop
  775.  
  776.     Move.l    D7,A0
  777.     Move.l    gg_UserData(a0),d0
  778.     cmp.l    #$11,d0
  779.     bne    .loop
  780.  
  781.     lea    CGad2,a0
  782.     move.w    12(a0),d0
  783.     and.w    #SELECTED,d0
  784.     sne.b    options+0
  785.  
  786.     lea    CGad4,a0
  787.     move.w    12(a0),d0
  788.     and.w    #SELECTED,d0
  789.     sne.b    options+1
  790.     
  791.     lea    CGad6,a0
  792.     move.w    12(a0),d0
  793.     and.w    #SELECTED,d0
  794.     sne.b    options+2
  795.     
  796.     lea    CGad8,a0
  797.     move.w    12(a0),d0
  798.     and.w    #SELECTED,d0
  799.     sne.b    options+3
  800.  
  801.     lea    CGad10,a0
  802.     move.w    12(a0),d0
  803.     and.w    #SELECTED,d0
  804.     sne.b    options+4
  805.     
  806.     lea    CGad12,a0
  807.     move.w    12(a0),d0
  808.     and.w    #SELECTED,d0
  809.     sne.b    options+5
  810.     
  811.  
  812.     Move.l    _ConfigWinBase,A0
  813.     CALLINT    CloseWindow
  814.  
  815.     Move.l    _MyWinBase,A0
  816.     Move.l    #399,D0
  817.     Move.l    #9,D1
  818.     CALLINT    SizeWindow
  819.  
  820.     move.l    #savename,d1
  821.     move.l    #1006,d2
  822.     CALLDOS    Open
  823.     move.l    d0,fhand
  824.     beq    .nofile
  825.     
  826.     move.l    #options,d2
  827.     move.l    #6,d3
  828.     move.l    fhand,d1
  829.     CALLDOS    Write
  830.     
  831.     move.l    fhand,d1
  832.     CALLDOS    Close
  833.  
  834. .nofile    rts
  835.  
  836.     *-------------------------------*
  837.  
  838. do_alert:    movem.l    d0-d7/a0-a6,-(a7)
  839.  
  840.     move.b    options+4,d0
  841.     or.b    options+5,d0
  842.     beq    ks2_req
  843.  
  844.     Move.l    _IntuitionBase,A0
  845.     move.l    ib_ActiveWindow(a0),_activewindow
  846.     move.l    ib_ActiveScreen(a0),_activescreen
  847.  
  848.     move.l    4,a6
  849.     move.l    20(a6),d0
  850.     cmp.l    #$00220002,d0
  851.     bgt    ks2_req
  852.  
  853.     tst.b    options+4
  854.     beq    req_off
  855.  
  856.     move.l    #0,lengths
  857.  
  858.     move.l    a1,a0
  859.     
  860.     move.l    12(a0),a1
  861.     move.b    -1(a1),lengths+0
  862.  
  863.     move.l    16(a0),a0        ; line 2
  864.     cmp.l    #0,a0
  865.     beq    req_err
  866.     move.l    12(a0),a1
  867.     move.b    -1(a1),lengths+1
  868.     
  869.     move.l    16(a0),a0        ; line 3
  870.     cmp.l    #0,a0
  871.     beq    req_err
  872.     move.l    12(a0),a1
  873.     move.b    -1(a1),lengths+2
  874.  
  875. req_err:    movem.l    (a7)+,d0-d7/a0-a6
  876.  
  877.     cmp.l    #$16011700,lengths    ; key 880 already set
  878.     beq    req_no
  879.     cmp.l    #$171d0000,lengths    ; disk is corrupt, use diskdoctor
  880.     beq    req_no
  881.     cmp.l    #$0f0f0000,lengths    ; not a dos disk in unit 
  882.     beq    req_no
  883.     cmp.l    #$16011300,lengths    ; disk is unreadable, use disk doctor
  884.     beq    req_no
  885.  
  886.     bsr    oldreq    
  887.  
  888.     tst.b    options+5
  889.     beq    req_no
  890.  
  891.     movem.l    d0-d7/a0-a6,-(a7)
  892.  
  893.     move.l    _activescreen,a0
  894.     CALLINT    ScreenToFront
  895.         
  896.     movem.l    (a7)+,d0-d7/a0-a6
  897.     rts    
  898.  
  899. ks2_req:    movem.l    (a7)+,d0-d7/a0-a6
  900. oldreq:    jmp    $12345678
  901.  
  902. req_no:    clr.l    d0
  903.     rts
  904.  
  905. req_off:    movem.l    (a7)+,d0-d7/a0-a6
  906.     bsr    oldreq    
  907.  
  908.     tst.b    options+5
  909.     beq    req_no
  910.  
  911.     movem.l    d0-d7/a0-a6,-(a7)
  912.  
  913.     move.l    _activescreen,a0
  914.     CALLINT    ScreenToFront
  915.         
  916.     movem.l    (a7)+,d0-d7/a0-a6
  917.     rts    
  918.  
  919.     *-------------------------------*
  920. doswrite:    
  921.     cmp.l    #0,d1
  922.     beq    .nowrite
  923.     CALLDOS    Write
  924. .nowrite    rts
  925.     *-------------------------------*
  926.  
  927. _IntuitionBase        Dc.l    0
  928. _DOSBase            Dc.l    0
  929. _MyWinBase        Dc.l    0
  930. _MessageWinBase        Dc.l    0
  931. _GfxBase            Dc.l    0
  932. _MyWinRPort        Dc.l    0
  933. _MessageWinRPort        Dc.l    0
  934. _MyWinUserPort        Dc.l    0
  935. _MessageWinUserPort    Dc.l    0
  936.  
  937. _ConfigWinRPort        Dc.l    0
  938. _ConfigWinBase        Dc.l    0
  939. _ConfigWinUserPort    Dc.l    0
  940.  
  941.  
  942. _LastItem        Dc.l    0
  943. _MyWinVPort        Dc.l    0
  944. _activewindow        dc.l    0
  945. _activescreen        dc.l    0
  946. IntName            INTNAME
  947. DosName            DOSNAME
  948.  
  949. reqpos:            dc.l    0
  950. lengths            dc.l    0
  951. segaddress:        dc.l    0
  952. tracknumber:        dc.l    0
  953. drivenumber:        dc.l    0
  954. handle:            dc.l    0
  955. handle2:            dc.l    0
  956. fhand:            dc.l    0
  957. retries:            dc.l    0
  958. reqlib:            dc.l    0
  959. orig_jmp:        dc.l    0,0
  960. filename:        dc.l    0
  961. dmswin:            dc.l    0
  962.  
  963. rlib:            dc.b    "req.library",0
  964. name1:            dc.b    "File Not Found",0
  965. name2:            dcb.b    100,0
  966. fsp:            dcb.b    100,0
  967. path:            dcb.b    100,0
  968.  
  969.     even
  970. file_req:    dc.w    0
  971.         dc.l    name1    ; title string
  972.         dc.l    0    ; initial path
  973.         dc.l    0    ; initital name
  974.         dc.l    0    ; full filename
  975.         
  976.         dc.w    0
  977.         dc.w    0
  978.         dc.w    0
  979.         
  980.         dc.w    0    ; 1 = half height
  981.         dc.w    0    ; 1 = half width
  982.         dc.w    0    ; 1 = half width (assigned) 
  983.  
  984.         dc.w    0    ; ??
  985.         dc.w    2150    ; xpos,ypos,fonts & other bits??
  986.         
  987.         dc.w    1    ; colour of dirs
  988.         dc.w    0    ; colour of files
  989.         dc.w    2    ; colour of volumes
  990.         dc.w    0    ; ??
  991.         dc.w    0    ; ??
  992.  
  993.         dc.w    0    ; border colour
  994.         dc.w    0    ; ??
  995.         
  996.         dcb.b    316,0
  997.  
  998.         even
  999. **************************************************
  1000. **            window defs for DMSV       **
  1001. **************************************************
  1002.  
  1003. MainWindow:
  1004.     dc.w    100,0    
  1005.     dc.w    400,10
  1006.     dc.b    0,1    
  1007.     dc.l    CLOSEWINDOW+DISKINSERTED+MENUPICK
  1008.     dc.l    NOCAREREFRESH+WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH
  1009.     dc.l    0    
  1010.     dc.l    0    
  1011.     dc.l    winname
  1012.     dc.l    0    
  1013.     dc.l    0    
  1014.     dc.w    5,5    
  1015.     dc.w    -1,-1    
  1016.     dc.w    WBENCHSCREEN    
  1017.  
  1018. winname:    dc.b    'DMSV version 1.0 by SHAGRATT/LSD',0
  1019.     cnop 0,2
  1020.  
  1021. **************************************************
  1022. **        window defs for error window        **
  1023. **************************************************
  1024.  
  1025. AlertWindow:
  1026.     dc.w    145,63
  1027.     dc.w    351,59
  1028.     dc.b    0,1
  1029.     dc.l    GADGETUP+VANILLAKEY
  1030.     dc.l    ACTIVATE+NOCAREREFRESH
  1031.     dc.l    GadgetList1
  1032.     dc.l    0
  1033.     dc.l    NewWindowName1
  1034.     dc.l    0
  1035.     dc.l    0
  1036.     dc.w    5,5
  1037.     dc.w    -1,-1
  1038.     dc.w    WBENCHSCREEN
  1039. NewWindowName1:
  1040.     dc.b    '     DMSV version 1.0 by SHAGRATT/LSD',0
  1041.     cnop 0,2
  1042. GadgetList1:
  1043. Gadget1:
  1044.     dc.l    Gadget2
  1045.     dc.w    29,17
  1046.     dc.w    292,9
  1047.     dc.w    GADGHBOX+GADGHIMAGE
  1048.     dc.w    RELVERIFY
  1049.     dc.w    BOOLGADGET
  1050.     dc.l    Border1a
  1051.     dc.l    0
  1052.     dc.l    IText1
  1053.     dc.l    0
  1054.     dc.l    0
  1055.     dc.w    0
  1056.     dc.l    0
  1057. Border1a:
  1058.     dc.w    -1,-1
  1059.     dc.b    0,0,RP_JAM1
  1060.     dc.b    5
  1061.     dc.l    BorderVectors1a
  1062.     dc.l    0
  1063.  
  1064. BorderVectors1a:
  1065.     dc.w    0,0
  1066.     dc.w    293,0
  1067.     dc.w    293,10
  1068.     dc.w    0,10
  1069.     dc.w    0,0
  1070.  
  1071. IText1:    dc.b    1,0,RP_JAM2,0
  1072.     dc.w    55,1
  1073.     dc.l    0
  1074.     dc.l    ITextText1
  1075.     dc.l    0
  1076. ITextText1:
  1077.     dc.b    '***** WRITE ERROR *****',0
  1078.     cnop 0,2
  1079. Gadget2:
  1080.     dc.l    0
  1081.     dc.w    146,34
  1082.     dc.w    60,17
  1083.     dc.w    0
  1084.     dc.w    RELVERIFY
  1085.     dc.w    BOOLGADGET
  1086.     dc.l    Border2a
  1087.     dc.l    0
  1088.     dc.l    IText2
  1089.     dc.l    0
  1090.     dc.l    0
  1091.     dc.w    0
  1092.     dc.l    0
  1093.  
  1094. Border2a:
  1095.     dc.w    -1,-1
  1096.     dc.b    2,0,RP_JAM1
  1097.     dc.b    5
  1098.     dc.l    BorderVectors2a
  1099.     dc.l    Border2b
  1100. Border2b:
  1101.     dc.w    -1,-1
  1102.     dc.b    1,0,RP_JAM1
  1103.     dc.b    5
  1104.     dc.l    BorderVectors2b
  1105.     dc.l    0
  1106. BorderVectors2a:
  1107.     dc.w    0,0
  1108.     dc.w    61,0
  1109.     dc.w    61,18
  1110.     dc.w    62,18
  1111.     dc.w    62,0
  1112. BorderVectors2b:
  1113.     dc.w    61,18
  1114.     dc.w    0,18
  1115.     dc.w    0,0
  1116.     dc.w    -1,0
  1117.     dc.w    -1,18
  1118. IText2:
  1119.     dc.b    1,0,RP_JAM2,0
  1120.     dc.w    22,5
  1121.     dc.l    0
  1122.     dc.l    ITextText2
  1123.     dc.l    0
  1124. ITextText2:
  1125.     dc.b    'OK',0
  1126.     cnop 0,2
  1127.  
  1128. **************************************************
  1129. **        window defs for config window        **
  1130. **************************************************
  1131.  
  1132. ConfigWindow:
  1133.     dc.w    105,33
  1134.     dc.w    256,116
  1135.     dc.b    0,1
  1136.     dc.l    GADGETUP
  1137.     dc.l    WINDOWDRAG+WINDOWDEPTH+ACTIVATE+NOCAREREFRESH
  1138.     dc.l    ConGL1
  1139.     dc.l    0
  1140.     dc.l    ConfigWindowName
  1141.     dc.l    0
  1142.     dc.l    0
  1143.     dc.w    5,5
  1144.     dc.w    -1,-1
  1145.     dc.w    WBENCHSCREEN
  1146. ConfigWindowName:
  1147.     dc.b    'DMSV CONFIG',0
  1148.     cnop 0,2
  1149.  
  1150. ConGL1:
  1151. CGad1:
  1152.     dc.l    CGad2
  1153.     dc.w    32,15
  1154.     dc.w    209,8
  1155.     dc.w    GADGHBOX+GADGHIMAGE
  1156.     dc.w    RELVERIFY
  1157.     dc.w    BOOLGADGET
  1158.     dc.l    Border1
  1159.     dc.l    0
  1160.     dc.l    CIText1
  1161.     dc.l    0
  1162.     dc.l    0
  1163.     dc.w    0
  1164.     dc.l    0
  1165. Border1:
  1166.     dc.w    -1,-1
  1167.     dc.b    0,0,RP_JAM1
  1168.     dc.b    5
  1169.     dc.l    BorderVectors1
  1170.     dc.l    0
  1171. BorderVectors1:
  1172.     dc.w    0,0
  1173.     dc.w    210,0
  1174.     dc.w    210,9
  1175.     dc.w    0,9
  1176.     dc.w    0,0
  1177. CIText1:
  1178.     dc.b    1,0,RP_JAM2,0
  1179.     dc.w    2,0
  1180.     dc.l    0
  1181.     dc.l    CITextText1
  1182.     dc.l    0
  1183. CITextText1:
  1184.     dc.b    'Verify DMS writes',0
  1185.     cnop 0,2
  1186. CGad2:
  1187.     dc.l    CGad3
  1188.     dc.w    10,14
  1189.     dc.w    15,9
  1190.     dc.w    GADGHIMAGE+GADGIMAGE
  1191.     dc.w    RELVERIFY+TOGGLESELECT
  1192.     dc.w    BOOLGADGET
  1193.     dc.l    Image1
  1194.     dc.l    Image2
  1195.     dc.l    0
  1196.     dc.l    0
  1197.     dc.l    0
  1198.     dc.w    0
  1199.     dc.l    0
  1200. Image1:
  1201.     dc.w    0,0
  1202.     dc.w    19,10
  1203.     dc.w    2
  1204.     dc.l    ImageData1
  1205.     dc.b    $0003,$0000
  1206.     dc.l    0
  1207. Image2:
  1208.     dc.w    0,0
  1209.     dc.w    19,10
  1210.     dc.w    2
  1211.     dc.l    ImageData2
  1212.     dc.b    $0003,$0000
  1213.     dc.l    0
  1214. CGad3:
  1215.     dc.l    CGad4
  1216.     dc.w    31,27
  1217.     dc.w    209,8
  1218.     dc.w    GADGHBOX+GADGHIMAGE
  1219.     dc.w    RELVERIFY
  1220.     dc.w    BOOLGADGET
  1221.     dc.l    Border2
  1222.     dc.l    0
  1223.     dc.l    CIText2
  1224.     dc.l    0
  1225.     dc.l    0
  1226.     dc.w    0
  1227.     dc.l    0
  1228. Border2:
  1229.     dc.w    -1,-1
  1230.     dc.b    0,0,RP_JAM1
  1231.     dc.b    5
  1232.     dc.l    BorderVectors2
  1233.     dc.l    0
  1234. BorderVectors2:
  1235.     dc.w    0,0
  1236.     dc.w    210,0
  1237.     dc.w    210,9
  1238.     dc.w    0,9
  1239.     dc.w    0,0
  1240. CIText2:
  1241.     dc.b    1,0,RP_JAM2,0
  1242.     dc.w    2,0
  1243.     dc.l    0
  1244.     dc.l    CITextText2
  1245.     dc.l    0
  1246. CITextText2:
  1247.     dc.b    'Verfiy WARP writes',0
  1248.     cnop 0,2
  1249. CGad4:
  1250.     dc.l    CGad5
  1251.     dc.w    10,26
  1252.     dc.w    19,10
  1253.     dc.w    GADGHIMAGE+GADGIMAGE
  1254.     dc.w    RELVERIFY+TOGGLESELECT
  1255.     dc.w    BOOLGADGET
  1256.     dc.l    Image3
  1257.     dc.l    Image4
  1258.     dc.l    0
  1259.     dc.l    0
  1260.     dc.l    0
  1261.     dc.w    0
  1262.     dc.l    0
  1263. Image3:
  1264.     dc.w    0,0
  1265.     dc.w    19,10
  1266.     dc.w    2
  1267.     dc.l    ImageData1
  1268.     dc.b    $0003,$0000
  1269.     dc.l    0
  1270. Image4:
  1271.     dc.w    0,0
  1272.     dc.w    19,10
  1273.     dc.w    2
  1274.     dc.l    ImageData2
  1275.     dc.b    $0003,$0000
  1276.     dc.l    0
  1277. CGad5:
  1278.     dc.l    CGad6
  1279.     dc.w    31,39
  1280.     dc.w    209,8
  1281.     dc.w    GADGHBOX+GADGHIMAGE
  1282.     dc.w    RELVERIFY
  1283.     dc.w    BOOLGADGET
  1284.     dc.l    Border3
  1285.     dc.l    0
  1286.     dc.l    CIText3
  1287.     dc.l    0
  1288.     dc.l    0
  1289.     dc.w    0
  1290.     dc.l    0
  1291. Border3:
  1292.     dc.w    -1,-1
  1293.     dc.b    0,0,RP_JAM1
  1294.     dc.b    5
  1295.     dc.l    BorderVectors3
  1296.     dc.l    0
  1297. BorderVectors3:
  1298.     dc.w    0,0
  1299.     dc.w    210,0
  1300.     dc.w    210,9
  1301.     dc.w    0,9
  1302.     dc.w    0,0
  1303. CIText3:
  1304.     dc.b    1,0,RP_JAM2,0
  1305.     dc.w    2,0
  1306.     dc.l    0
  1307.     dc.l    CITextText3
  1308.     dc.l    0
  1309. CITextText3:
  1310.     dc.b    'Quit DMS/WARP on error',0
  1311.     cnop 0,2
  1312. CGad6:
  1313.     dc.l    CGad7
  1314.     dc.w    10,38
  1315.     dc.w    19,10
  1316.     dc.w    GADGHIMAGE+GADGIMAGE
  1317.     dc.w    RELVERIFY+TOGGLESELECT
  1318.     dc.w    BOOLGADGET
  1319.     dc.l    Image5
  1320.     dc.l    Image6
  1321.     dc.l    0
  1322.     dc.l    0
  1323.     dc.l    0
  1324.     dc.w    0
  1325.     dc.l    0
  1326. Image5:
  1327.     dc.w    0,0
  1328.     dc.w    19,10
  1329.     dc.w    2
  1330.     dc.l    ImageData1
  1331.     dc.b    $0003,$0000
  1332.     dc.l    0
  1333. Image6:
  1334.     dc.w    0,0
  1335.     dc.w    19,10
  1336.     dc.w    2
  1337.     dc.l    ImageData2
  1338.     dc.b    $0003,$0000
  1339.     dc.l    0
  1340. CGad7:
  1341.     dc.l    CGad8
  1342.     dc.w    32,51
  1343.     dc.w    209,8
  1344.     dc.w    GADGHBOX+GADGHIMAGE
  1345.     dc.w    RELVERIFY
  1346.     dc.w    BOOLGADGET
  1347.     dc.l    Border4
  1348.     dc.l    0
  1349.     dc.l    CIText4
  1350.     dc.l    0
  1351.     dc.l    0
  1352.     dc.w    0
  1353.     dc.l    0
  1354. Border4:
  1355.     dc.w    -1,-1
  1356.     dc.b    0,0,RP_JAM1
  1357.     dc.b    5
  1358.     dc.l    BorderVectors4
  1359.     dc.l    0
  1360. BorderVectors4:
  1361.     dc.w    0,0
  1362.     dc.w    210,0
  1363.     dc.w    210,9
  1364.     dc.w    0,9
  1365.     dc.w    0,0
  1366. CIText4:
  1367.     dc.b    1,0,RP_JAM2,0
  1368.     dc.w    2,0
  1369.     dc.l    0
  1370.     dc.l    CITextText4
  1371.     dc.l    0
  1372. CITextText4:
  1373.     dc.b    'Use Req.Library',0
  1374.     cnop 0,2
  1375. CGad8:
  1376.     dc.l    CGad9
  1377.     dc.w    10,50
  1378.     dc.w    19,10
  1379.     dc.w    GADGHIMAGE+GADGIMAGE
  1380.     dc.w    RELVERIFY+TOGGLESELECT
  1381.     dc.w    BOOLGADGET
  1382.     dc.l    Image7
  1383.     dc.l    Image8
  1384.     dc.l    0
  1385.     dc.l    0
  1386.     dc.l    0
  1387.     dc.w    0
  1388.     dc.l    0
  1389. Image7:
  1390.     dc.w    0,0
  1391.     dc.w    19,10
  1392.     dc.w    2
  1393.     dc.l    ImageData1
  1394.     dc.b    $0003,$0000
  1395.     dc.l    0
  1396. Image8:
  1397.     dc.w    0,0
  1398.     dc.w    19,10
  1399.     dc.w    2
  1400.     dc.l    ImageData2
  1401.     dc.b    $0003,$0000
  1402.     dc.l    0
  1403. CGad9:
  1404.     dc.l    CGad10
  1405.     dc.w    32,63
  1406.     dc.w    209,8
  1407.     dc.w    GADGHBOX+GADGHIMAGE
  1408.     dc.w    RELVERIFY
  1409.     dc.w    BOOLGADGET
  1410.     dc.l    Border5
  1411.     dc.l    0
  1412.     dc.l    CIText5
  1413.     dc.l    0
  1414.     dc.l    0
  1415.     dc.w    0
  1416.     dc.l    0
  1417. Border5:
  1418.     dc.w    -1,-1
  1419.     dc.b    0,0,RP_JAM1
  1420.     dc.b    5
  1421.     dc.l    BorderVectors5
  1422.     dc.l    0
  1423. BorderVectors5:
  1424.     dc.w    0,0
  1425.     dc.w    210,0
  1426.     dc.w    210,9
  1427.     dc.w    0,9
  1428.     dc.w    0,0
  1429. CIText5:
  1430.     dc.b    1,0,RP_JAM2,0
  1431.     dc.w    2,0
  1432.     dc.l    0
  1433.     dc.l    CITextText5
  1434.     dc.l    0
  1435. CITextText5:
  1436.     dc.b    'Stop 880 checksum errors',0
  1437.     cnop 0,2
  1438. CGad10:
  1439.     dc.l    CGad11
  1440.     dc.w    10,62
  1441.     dc.w    19,10
  1442.     dc.w    GADGHIMAGE+GADGIMAGE
  1443.     dc.w    RELVERIFY+TOGGLESELECT
  1444.     dc.w    BOOLGADGET
  1445.     dc.l    Image9
  1446.     dc.l    Image10
  1447.     dc.l    0
  1448.     dc.l    0
  1449.     dc.l    0
  1450.     dc.w    0
  1451.     dc.l    0
  1452. Image9:
  1453.     dc.w    0,0
  1454.     dc.w    19,10
  1455.     dc.w    2
  1456.     dc.l    ImageData1
  1457.     dc.b    $0003,$0000
  1458.     dc.l    0
  1459. Image10:
  1460.     dc.w    0,0
  1461.     dc.w    19,10
  1462.     dc.w    2
  1463.     dc.l    ImageData2
  1464.     dc.b    $0003,$0000
  1465.     dc.l    0
  1466. CGad11:
  1467.     dc.l    CGad12
  1468.     dc.w    32,75
  1469.     dc.w    209,8
  1470.     dc.w    GADGHBOX+GADGHIMAGE
  1471.     dc.w    RELVERIFY
  1472.     dc.w    BOOLGADGET
  1473.     dc.l    Border6
  1474.     dc.l    0
  1475.     dc.l    CIText6
  1476.     dc.l    0
  1477.     dc.l    0
  1478.     dc.w    0
  1479.     dc.l    0
  1480. Border6:
  1481.     dc.w    -1,-1
  1482.     dc.b    0,0,RP_JAM1
  1483.     dc.b    5
  1484.     dc.l    BorderVectors6
  1485.     dc.l    0
  1486. BorderVectors6:
  1487.     dc.w    0,0
  1488.     dc.w    210,0
  1489.     dc.w    210,9
  1490.     dc.w    0,9
  1491.     dc.w    0,0
  1492. CIText6:
  1493.     dc.b    1,0,RP_JAM2,0
  1494.     dc.w    2,0
  1495.     dc.l    0
  1496.     dc.l    CITextText6
  1497.     dc.l    0
  1498. CITextText6:
  1499.     dc.b    'Restore Screen after Alert',0
  1500.     cnop 0,2
  1501. CGad12:
  1502.     dc.l    CGad13
  1503.     dc.w    10,74
  1504.     dc.w    19,10
  1505.     dc.w    GADGHIMAGE+GADGIMAGE
  1506.     dc.w    RELVERIFY+TOGGLESELECT
  1507.     dc.w    BOOLGADGET
  1508.     dc.l    Image11
  1509.     dc.l    Image12
  1510.     dc.l    0
  1511.     dc.l    0
  1512.     dc.l    0
  1513.     dc.w    0
  1514.     dc.l    0
  1515. Image11:
  1516.     dc.w    0,0
  1517.     dc.w    19,10
  1518.     dc.w    2
  1519.     dc.l    ImageData1
  1520.     dc.b    $0003,$0000
  1521.     dc.l    0
  1522. Image12:
  1523.     dc.w    0,0
  1524.     dc.w    19,10
  1525.     dc.w    2
  1526.     dc.l    ImageData2
  1527.     dc.b    $0003,$0000
  1528.     dc.l    0
  1529. CGad13:
  1530.     dc.l    0
  1531.     dc.w    94,90
  1532.     dc.w    59,17
  1533.     dc.w    0
  1534.     dc.w    RELVERIFY
  1535.     dc.w    BOOLGADGET
  1536.     dc.l    Border7a
  1537.     dc.l    0
  1538.     dc.l    CIText7
  1539.     dc.l    0
  1540.     dc.l    0
  1541.     dc.w    0
  1542.     dc.l    $11
  1543.     
  1544. Border7a:
  1545.     dc.w    -1,-1
  1546.     dc.b    2,0,RP_JAM1
  1547.     dc.b    5
  1548.     dc.l    BorderVectors7a
  1549.     dc.l    Border7b
  1550. Border7b:
  1551.     dc.w    -1,-1
  1552.     dc.b    1,0,RP_JAM1
  1553.     dc.b    5
  1554.     dc.l    BorderVectors7b
  1555.     dc.l    0
  1556. BorderVectors7a:
  1557.     dc.w    0,0
  1558.     dc.w    61,0
  1559.     dc.w    61,18
  1560.     dc.w    62,18
  1561.     dc.w    62,0
  1562. BorderVectors7b:
  1563.     dc.w    61,18
  1564.     dc.w    0,18
  1565.     dc.w    0,0
  1566.     dc.w    -1,0
  1567.     dc.w    -1,18
  1568. CIText7:
  1569.     dc.b    1,0,RP_JAM2,0
  1570.     dc.w    22,5
  1571.     dc.l    0
  1572.     dc.l    CITextText7
  1573.     dc.l    0
  1574. CITextText7:
  1575.     dc.b    'OK',0
  1576.     cnop 0,2
  1577.  
  1578.  
  1579.  
  1580. myname:        dc.b    "DMSV",0
  1581. trddevice:        dc.b    "trackdisk.device",0
  1582. vermsg:        dc.b    " Verifying",8,8,8,8,8,8,8,8,8,8
  1583. vermsgend:
  1584. wrimsg:        dc.b    " Retrying ",8,8,8,8,8,8,8,8,8,8
  1585. wrimsgend:
  1586. pakmsg:        dc.b    " unPacking",8,8,8,8,8,8,8,8,8,8
  1587. pakmsgend:
  1588.  
  1589. quitmsg:        dc.b    10,13,10,13,"Aborted",10,13,10,13
  1590. quitmsgend:
  1591.  
  1592. wrp_vermsg:        dc.b    11,$09b,"0;33;40mVerifying",$09b,"0;31;40m",10,13
  1593. wrp_vermsgend:
  1594. wrp_wrimsg:        dc.b    11,$09b,"0;33;40mReTrying ",$09b,"0;31;40m",10,13
  1595. wrp_wrimsgend:
  1596.  
  1597. savename:    dc.b    "S:DMSV.prefs",0
  1598. abortcommand:    dc.b    3
  1599.     even
  1600.  
  1601.     section    stuff,bss
  1602.  
  1603. diskio:        ds.l    20
  1604. readreply:    ds.l    8
  1605. diskbuff:    ds.l    512*6
  1606. options:        dcb.b    6
  1607.  
  1608.     section    images,data_c
  1609.     
  1610. ImageData1:    dc.w    $0000,$6000,$0000,$6000,$0000,$6000,$0000,$6000
  1611.     dc.w    $0000,$6000,$0000,$6000,$0000,$6000,$0000,$6000
  1612.     dc.w    $0000,$6000,$7FFF,$E000,$FFFF,$8000,$C000,$0000
  1613.     dc.w    $C000,$0000,$C000,$0000,$C000,$0000,$C000,$0000
  1614.     dc.w    $C000,$0000,$C000,$0000,$C000,$0000,$8000,$0000
  1615.  
  1616. ImageData2:    dc.w    $FFFF,$C000,$FFFF,$8000,$FFF9,$8000,$FFF3,$8000
  1617.     dc.w    $FFE7,$8000,$F3CF,$8000,$F99F,$8000,$FC3F,$8000
  1618.     dc.w    $FFFF,$8000,$C000,$0000,$0000,$2000,$3FFF,$E000
  1619.     dc.w    $3FFF,$E000,$3FFF,$E000,$3FFF,$E000,$3FFF,$E000
  1620.     dc.w    $3FFF,$E000,$3FFF,$E000,$3FFF,$E000,$3FFF,$E000
  1621.  
  1622.  
  1623.